#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#include "dictionary.h"
#include "iniparser.h"

#include <gsl/gsl_math.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_odeiv2.h>

#include "params.h"
#include "const.h"
#include "output.h"

#ifndef _GRAV_H_
#define _GRAV_H_

typedef struct grav_params_{
    cosmo_params cp;
    double k;

    double a_ini;
    int h_output_size;
} grav_params;

void ini_grav_params( grav_params *gp, dictionary *dict );

/* use conformal time eta as the independent variable */
int ODE_grav( double eta, const double y[], double f[], void *params );

void do_grav_calculation( grav_params *gp, double *k_array, int k_num );


#endif  // GRAV_H_
